/**
 * Vuex
 * http://vuex.vuejs.org/zh-cn/intro.html
 */
// import Vue from 'vue';
// import Vuex from 'vuex';

// Vue.use(Vuex);

// const now = new Date();
// const store = new Vuex.Store({
//     state: {
//         // 当前用户
//         user: {
//             name: 'coffce',
//             img: 'dist/images/1.jpg'
//         },
//         // 会话列表
//         sessions: [{
//                 id: 1,
//                 user: {
//                     name: '示例介绍',
//                     img: 'dist/images/2.png'
//                 },
//                 messages: [{
//                     content: 'Hello，这是一个基于Vue + Vuex + Webpack构建的简单chat示例，聊天记录保存在localStorge, 有什么问题可以通过Github Issue问我。',
//                     date: now
//                 }, {
//                     content: '项目地址: https://github.com/coffcer/vue-chat',
//                     date: now
//                 }]
//             },
//             {
//                 id: 2,
//                 user: {
//                     name: 'webpack',
//                     img: 'dist/images/3.jpg'
//                 },
//                 messages: []
//             }
//         ],
//         // 当前选中的会话
//         currentSessionId: 1,
//         // 过滤出只包含这个key的会话
//         filterKey: ''
//     },
//     mutations: {
//         INIT_DATA(state) {
//             let data = localStorage.getItem('vue-chat-session');
//             if (data) {
//                 state.sessions = JSON.parse(data);
//             }
//         },
//         // 发送消息
//         SEND_MESSAGE({
//             sessions,
//             currentSessionId
//         }, content) {
//             let session = sessions.find(item => item.id === currentSessionId);
//             session.messages.push({
//                 content: content,
//                 date: new Date(),
//                 self: true
//             });
//         },
//         // 选择会话
//         SELECT_SESSION(state, id) {
//             state.currentSessionId = id;
//         },
//         // 搜索
//         SET_FILTER_KEY(state, value) {
//             state.filterKey = value;
//         }
//     }
// });

// store.watch(
//     (state) => state.sessions,
//     (val) => {
//         console.log('CHANGE: ', val);
//         localStorage.setItem('vue-chat-session', JSON.stringify(val));
//     }, {
//         deep: true
//     }
// );

// export default store;
// export const actions = {
//     initData: ({
//         dispatch
//     }) => dispatch('INIT_DATA'),
//     sendMessage: ({
//         dispatch
//     }, content) => dispatch('SEND_MESSAGE', content),
//     selectSession: ({
//         dispatch
//     }, id) => dispatch('SELECT_SESSION', id),
//     search: ({
//         dispatch
//     }, value) => dispatch('SET_FILTER_KEY', value)
// };
// {
//     id: '1',
//     icon: 'angle-double-down',
//     name: '最近聊天1',
//     messages: [{
//         content: 'Hello，这是一个基于Vue + Vuex + Webpack构建的简单chat示例，聊天记录保存在localStorge, 有什么问题可以通过Github Issue问我。',
//         date: now
//     }, {
//         content: '项目地址: https://github.com/coffcer/vue-chat',
//         date: now
//     }]
// },
// {
//     id: '2',
//     icon: 'h-square',
//     name: '最近聊天2',
//     messages: [{
//         content: 'Hello，这是一个基于Vue + Vuex + Webpack构建的简单chat示例，聊天记录保存在localStorge, 有什么问题可以通过Github Issue问我。',
//         date: now
//     }, {
//         content: '项目地址: https://github.com/coffcer/vue-chat',
//         date: now
//     }]
// },
// {
//     id: '3',
//     icon: 'heart',
//     name: '最近聊天3',
//     messages: [{
//         content: 'Hello，这是一个基于Vue + Vuex + Webpack构建的简单chat示例，聊天记录保存在localStorge, 有什么问题可以通过Github Issue问我。',
//         date: now
//     }, {
//         content: '项目地址: https://github.com/coffcer/vue-chat',
//         date: now
//     }]
// },
// {
//     id: '4',
//     icon: 'wheelchair',
//     name: '最近聊天4',
//     messages: [{
//         content: 'Hello，这是一个基于Vue + Vuex + Webpack构建的简单chat示例，聊天记录保存在localStorge, 有什么问题可以通过Github Issue问我。',
//         date: now
//     }, {
//         content: '项目地址: https://github.com/coffcer/vue-chat',
//         date: now
//     }]
// },
// {
//     id: '5',
//     name: 'webpack5',
//     icon: 'wheelchair',
//     messages: []
// }
const now = new Date();
import * as chatMessageService from '@/api/chat/chatmessage'
export default {
    namespaced: true,
    state: {
        // 当前用户
        user: {
            name: 'six god',
            img: 'https://cn.bing.com/th?id=OIP.s78ySu_7ua5tT2XUC5Q46wHaEK&pid=Api&rs=1'
        },
        // 操作功能
        funs: [],
        // 会话列表
        sessions: [],
        // 当前选中的会话
        currentSessionId: '',
        // 当前选中的菜单
        currentFunsId: '1',
        // 过滤出只包含这个key的会话
        filterKey: ''
    },
    getters: {
        user: state => state.user,
        session: state => {
            // state.sessions.find(session => session.sessionId === state.currentSessionId)
            let res = []
            if (state.currentSessionId != ''){
                let index = state.sessions.findIndex(item => item.sessionId === state.currentSessionId);
                console.log('index'+index)
                if (index > -1){
                    console.log(state.sessions[index])
                    console.log(state.sessions[index].sessionType)
                    console.log(state.sessions[index].session)
                    res = state.sessions[index].session
                }
            }
            return res
        },
        getComponent: state => {
            let obj = {
                id: '',
                icon: '',
                type: '',
                description: ''
            }
            if (state.funs.length > 0) {
                state.funs.forEach((item, index) => {
                    if (item.id === state.currentFunsId) {
                        obj = item
                    }
                })
            }
            // console.log('输出组件', JSON.stringify(obj))
            return obj;
        },
    },
    mutations: {
        // 初始化功能
        INIT_DATA(state, data) {
            if (data) {
                state.funs = data
            }
        },
        // 初始化聊天记录
        INIT_SESSION(state, data) {
            if (data) {
                state.sessions = data
                // console.table(state.sessions)
            }
        },
        // 设置聊天信息
        SET_SESSION_MSG(state, data) {
            if (data) {
                // console.log('currentSessionId',state.currentSessionId)
                let index = state.sessions.findIndex(item => item.sessionId === state.currentSessionId);
                state.sessions[index].session = data
                console.log(state.sessions[index])
            }
        },
        // 设置最后的聊天信息
        SET_SESSION_LASTMSG(state, data) {
            if (data) {
                // console.log('currentSessionId',state.currentSessionId)
                let index = state.sessions.findIndex(item => item.sessionId === state.currentSessionId);
                state.sessions[index].lastMsg = data[data.length - 1].content
                // console.log(data[data.length - 1].content)
            }
        },
        // 发送消息
        SEND_MESSAGE({
            sessions,
            currentSessionId
        }, msg) {
            let index = sessions.findIndex(item => item.sessionId === currentSessionId);
            sessions[index].session.push(msg);
        },
        // 选择会话
        SELECT_SESSION(state, id) {
            state.currentSessionId = id;
            console.log("state.currentSessionId", state.currentSessionId)
        },
        // 选择功能
        SELECT_FUNS(state, id) {
            console.log("chufa le " + id)
            state.currentFunsId = id;
        },
        // 搜索
        SET_FILTER_KEY(state, value) {
            state.filterKey = value;
        }
        // },
    },
    actions: {
        initData: ({
            commit,
            dispatch
        }, data) => commit('INIT_DATA', data),
        initSession: ({
            commit,
            dispatch
        }, data) => commit('INIT_SESSION', data),
        sendMessage: ({
            commit,
            dispatch
        }, content) => commit('SEND_MESSAGE', content),
        selectSession: ({
            state,
            commit,
            dispatch
        }, id) => {
            commit('SELECT_SESSION', id);
            // console.log('选择聊天绘画人',id)
            let obj = state.sessions.find(item => item.sessionId == id);
            const params = {
                other: obj.contacts
            }
            chatMessageService.getPrivateChatMessage(params).then(data => {
                // console.table(data)
                if (data.list.length > 0) {
                    commit('SET_SESSION_MSG', data.list)
                    commit('SET_SESSION_LASTMSG', data.list)
                }
            })
        },
        // 选择功能节点
        selectFuns: ({
            commit,
            dispatch
        }, id) => {
            commit('SELECT_FUNS', id)
        },
        search: ({
            commit,
            dispatch
        }, value) => commit('SET_FILTER_KEY', value)
    },

}